package com.tedu.API.thread;

/**
 * 线程的生命周期----线程的整个执行流程【线程模型】
 * 1.新建状态【New】  线程创建出来 ，线程出生
 *      SimpleThread st=new SimpleThread();
 * 2.就绪状态【Runnable】 线程调用start()方法，线程进入就绪状态，等待被调度
 *     st.start();
 * 3.运行状态【Running】 新建线程，执行run进入运行状态
 *      线程获取CPU时间片，run()方法中开始
 * 4.阻塞状态【Blocked】 线程停止状态---线程的睡眠
 *     调用Thread.sleep()
 * 5.终止状态【Dead】 正常死亡(线程的死亡)  异常死亡
 *     run(){} 中最后
 *
 * 案例: 创建线程子类: SimpleThread----Thread线程类，线程执行流程
 */
public class ThreadStateDemo {
    public static void main(String[] args) {
        System.out.println("主线程处于新建状态"); // 0-开始

        SimpleThread st=new SimpleThread();  // 1.新建状态: 线程出生
        System.out.println(st.getName()+"现在处于新建状态: 出生");

        st.start();  // 2.就绪状态
        System.out.println(st.getName()+"调用start后进入就绪状态~");
    }
}
//创建线程子类: SimpleThread
class SimpleThread extends Thread{
    public void run() { // 3.运行状态
        System.out.println(Thread.currentThread().getName()+"处于运行状态~~");
        //Thread.currentThread() 调用当前线程所有内容
        try {
            Thread.sleep(1000);  // 4.阻塞状态
        } catch (InterruptedException e) {
            System.out.println(Thread.currentThread().getName()+" 被中断 ");
        }
        // 5.线程死亡
        System.out.println(Thread.currentThread().getName()+"处于终止状态");
    }
}
